package cn.akwangl.swagger2dev.controller;

import cn.akwangl.swagger2dev.controller.vo.UserVO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.*;

@RestController
@RequestMapping("/test")
@Api(value = "测试 Controller 相关api", tags = {"测试接口"})
public class ControllerDev {

    /**
     * @Api： 描述 Controller
     * @ApiIgnore： 忽略该 Controller，指不对当前类做扫描
     * @ApiOperation： 描述 Controller类中的 method接口
     * @ApiParam： 单个参数描述，与 @ApiImplicitParam不同的是，他是写在参数左侧的。如（ @ApiParam(name="username",value="用户名")Stringusername）
     * @ApiModel： 描述 POJO对象
     * @ApiProperty： 描述 POJO对象中的属性值
     * @ApiImplicitParam： 描述单个入参信息
     * @ApiImplicitParams： 描述多个入参信息
     * @ApiResponse： 描述单个出参信息
     * @ApiResponses： 描述多个出参信息
     * @ApiError： 接口错误所返回的信息
     */
    @ApiOperation(value = "测试", notes = "打印HelloWorld")
    @ApiImplicitParam(name = "msg", value = "消息", paramType = "path", required = true, dataType = "String")
    @GetMapping("/helloWorld/{msg}")
    public String helloWorld(@PathVariable("msg") String msg) {
        return "HelloWorld" + msg;
    }

    @ApiOperation(value = "登录")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "userName", value = "用户名", required = true, dataType = "String"),
            @ApiImplicitParam(name = "password", value = "密码", required = true, dataType = "String")
    })
    @PostMapping("/login")
    public String login(String userName, String password) {
        return userName;
    }

    @ApiOperation(value = "注册")
    @PostMapping("/signIn")
    public UserVO signIn(@RequestBody UserVO userVO) {
        return userVO;
    }

}
